import { RuleTypeEnum } from "@/enums/RuleTypeEnum";

/**
 * 登录用户信息
 */
export interface UserInfo {
  userId: number;
  nickname: string;
  avatar: string;
  courseId: number;
  courseName: string;
  wallpaperUrl: string;
  roles: string[];
  perms: string[];
}

/**
 * 用户查询对象类型
 */
export interface RuleQuery extends PageQuery {
  keywords?: string;
}

/**
 * 用户分页对象
 */
export interface RulePageVO {
  /**
   * 规则编号
   */
  id: number;
  /**
   * 规则名称
   */
  name?: string;
  /**
   * 创建时间
   */
  createTime?: Date;
  /**
   * 更行时间
   */
  updateTime?: Date;
  /**
   * 创建用户名称
   */
  nickname?: string;
}

/**
 * 用户表单类型
 */
/**
 * 用户表单类型
 */
export interface UserForm {
  /**
   * 用户头像
   */
  avatar?: string;
  /**
   * 部门ID
   */
  deptId: number;
  /**
   * 邮箱
   */
  email?: string;
  /**
   * 性别
   */
  gender: number;
  /**
   * 用户ID
   */
  userId?: number;
  /**
   * 昵称
   */
  nickname: string;
  /**
   * 角色ID集合
   */
  roleIds?: number[];
  /**
   * 用户状态(1:正常;0:禁用)
   */
  status?: number;
  /**
   * 用户名
   */
  username: string;

  mobile: string;
}

export interface RuleForm {
  value: any;
  /**
   * 属于哪个课程（不填时，并且是实例规则时，进行实例展示）
   */
  courseId?: number;
  /**
   * 创建人ID
   */
  createBy?: number;
  /**
   * 逻辑删除标识(1:已删除;0:未删除)
   */
  deleted?: number;
  /**
   * 是否是实例规则（0:否，1：是）
   */
  example?: number;
  /**
   * 规则的分值
   */
  grades?: number;
  /**
   * 规则ID
   */
  id?: number;
  /**
   * 规则名称
   */
  name?: string;
  /**
   * 父节点ID
   */
  parentId?: number;

  children: RuleForm[];
  /**
   * 显示顺序
   */
  sort?: number;
  /**
   * 父节点ID路径
   */
  treePath?: string;
  /**
   * 规则类型（1:规则总名称，2:规则标题，3:具体规则）
   */
  type: RuleTypeEnum;
  /**
   * 修改人ID
   */
  updateBy?: number;
}

export interface AddRuleForm {
  /**
   * 属于哪个课程（不填时，并且是实例规则时，进行实例展示）
   */
  courseId?: number;
  /**
   * 创建人ID
   */
  createBy?: number;
  /**
   * 逻辑删除标识(1:已删除;0:未删除)
   */
  deleted?: number;
  /**
   * 是否是实例规则（0:否，1：是）
   */
  example?: number;
  /**
   * 规则的分值
   */
  grades?: number;
  /**
   * 规则ID
   */
  id?: number;
  /**
   * 规则名称
   */
  name?: string;
  /**
   * 父节点ID
   */
  parentId?: number;

  children?: RuleForm[];
  /**
   * 显示顺序
   */
  sort?: number;
  /**
   * 父节点ID路径
   */
  treePath?: string;
  /**
   * 修改人ID
   */
  updateBy?: number;

  type?: number;
}
